﻿#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>


//指针运算
//指针 + -整数
//指针 - 指针
//指针的关系运算


//用下标访问数组
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
		/*printf("%d", arr[i]);*/
//	}
//
//
//	return 0;
//}

//使用指针访问数组
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i)); // p + i这⾥就是指针	+	整数
//	}
//
//
//	return 0;
//}


//指针减整数
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = &arr[0];
//	int i = 0;
//	for (i = sz -1; i >= 0 ; i--)
//	{
//		printf("%d ", *(p + i)); 
//	}
//
//
//	return 0;
//}




//指针 - 指针
//得到的是指针和指针之间的元素个数
//但注意，要在同一空间中
//int main()
//{
//	char ch[10];
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]); 
//	int* p = &arr[0];
//	int i = 0;
//	printf("%d", &arr[9] - &arr[0]); // 可以求
//	printf("%d", &ch[9] - &arr[0]); // 求不了
//	return 0;
//}




//数组名就是首元素的地址
//arr = &arr[0]
//size_t my_strlen(char* p)
//{
//	size_t count = 0;
//	while (*p != '\0')// || while (*p） //注意不要变成字符串了
//	{
//		count++;
//		p++;
//	}
//	return count;
//}
//
//int main()
//{
//	char arr[] = "abcdef";
//	size_t len = my_strlen(arr);
//	printf("%zd\n", len);
//
//
//	return 0;
//}



  
//指针 - 指针
//得到的是指针和指针之间的元素个数
//但注意，要在同一空间中

//size_t my_strlen(char* p)
//{
//	char* start = p;
//	while (*p)
//	{
//		p++;
//	}
//	return p - start;  //指针减指针
//}
//
//int main()
//{
//	char arr[] = "abcdef";
//	size_t len = my_strlen(arr);
//	printf("%zd\n", len);
//
//
//	return 0;
//}




//指针比较大小
int main()
{
	int arr[] = { 1,2,3,4,5,6,7 };
	int* p = &arr[0];
	int sz = sizeof(arr) / sizeof(arr[0]);
	while (p < &arr[sz])
	{
		printf("%d", *p);
		p++;
	}


	return 0;
}

//const
//1，用于*之前，使p指针变量所指向hi的内容固定
//2，在*之后，使p这一地址固定
//3.都用就都固定